// 接受一个只读的字符串或数字数组（元组）作为输入，并生成一个对象类型，
// 这个 in 关键字直接理解为 for ··· in 遍历对象的那个 in 即可
type TupleToObject<T extends readonly (string|number)[]> = { 
    [P in T[number]]: P
    //（T[number] 表示元组中任意位置的元素类型） P是 T[number]的任意位置的一个
}



const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const

type result = TupleToObject<typeof tuple> // expected { 'tesla': 'tesla', 'model 3': 'model 3', 'model X': 'model X', 'model Y': 'model Y'}
